package com.service;

import com.domain.entity.Indent;
import com.domain.req.AddIndentReq;
import com.domain.req.IndentUpdateReq;
import com.domain.req.ListIndentReq;
import com.domain.req.PageReq;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.annotations.Param;

/**
 * @author caishenao
 * @description 针对表【indent】的数据库操作Service
 * @createDate 2023-10-12 20:12:39
 */
public interface IndentService {
    /**
     * 根据订单id查询订单信息
     *
     * @param id 订单id
     * @return 订单信息
     */
    Indent getById(Integer id);


    /**
     * 根据账单id删除订单数据
     *
     * @param id 订单id
     */
    void deleteById(@Param("id") Integer id);


    /**
     * 新增订单
     *
     * @param addIndentReq 新增请求
     */
    Indent addIndent(AddIndentReq addIndentReq);

    /**
     * 分页查询当前登录用户的所有订单信息
     *
     * @return 订单信息
     */
    PageInfo<Indent> list(PageReq pageReq, ListIndentReq listIndentReq);


    /**
     * 修改订单状态 代发货
     *
     * @param id 订单id
     */
    void shipments(Integer id);

    /**
     * 根据订单id收货
     *
     * @param id 订单id
     */
    void receipt(Integer id);

    /**
     * 支付订单
     *
     * @param indentId 订单id
     */
    void payIndent(Integer indentId);

    /**
     * 根据订单id修改订单数据
     *
     * @param indentUpdateReq 订单修改请求
     */
    void updateById(IndentUpdateReq indentUpdateReq);
}
